home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.46 / quicksort / quicksort.p < prev    next >
Text File  |  1995-03-27  |  1KB  |  68 lines

  1. PROGRAM quicksort;  { sortieren durch Zerlegen }
  2.  
  3. { cøding døne by Røgersøft }
  4.  
  5. CONST n=10;
  6.  
  7. VAR feld:ARRAY[1..n] OF real;
  8.  
  9.  
  10. PROCEDURE tausche(VAR element1,element2:REAL);
  11. {vertausch 2 elemente geht schneller mit exchange =;) }
  12.  
  13.  VAR puffer:REAL;
  14.  
  15.  BEGIN
  16.   puffer:=element1;
  17.   element1:=element2;
  18.   element2:=puffer; 
  19.  END;
  20.  
  21.  
  22.  
  23. PROCEDURE quicksort(links,rechts:INTEGER);
  24.  VAR i,j:INTEGER;
  25.        m:REAL;
  26.  BEGIN
  27.   IF links<rechts THEN
  28.   BEGIN
  29.    m:=feld[links];
  30.    i:=links;
  31.    j:=rechts;
  32.    WHILE i<=j DO
  33.    BEGIN
  34.     WHILE feld[i]<m DO i:=i+1;
  35.     WHILE feld[j]>m DO j:=j-1;
  36.     IF i<=j THEN 
  37.      BEGIN
  38.       tausche(feld[i],feld[j]);
  39.       i:=i+1;
  40.       j:=j-1;
  41.      END;
  42.    END;
  43.    quicksort(links,j);
  44.    quicksort(i,rechts);
  45.   END;
  46.  END; 
  47.  
  48.   
  49. PROCEDURE eingabe;
  50. var i:INTEGER;
  51.  BEGIN
  52.   writeln('Bitte ',n,' Elemente eingeben');
  53.   FOR i:=1 TO n DO readln(feld[i]);
  54.  END;
  55.  
  56. PROCEDURE ausgabe;
  57.  var i:INTEGER;
  58.   BEGIN
  59.    FOR i:=1 TO n DO writeln(feld[i]);
  60.   END;  
  61.  
  62.  
  63. BEGIN
  64.  eingabe;
  65.  quicksort(1,n);
  66.  ausgabe;
  67. END.
  68.